<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="ctp-tag" prefix="ctp" %>
<script type="text/javascript">
 /**
  * 创建扩展属性
  * @version	 1.0
  * @since	 1.0
  * @author	kfzx-lixy01
  * @param {ctp.ui}  formObj 目标form对象
  * @param {ctp.ui}  gridLayoutObj 扩展属性存放的布局器对象
  * @param {String}  extProId 扩展属性ID
  * @param {String}  extProName 扩展属性名称
  * @param {String}  extProType 扩展属性类型,0：textfield，1：textarea，2：date，3：combobox，4：radiogroup，5：checkboxgroup
  * @param {String}  extProDefaultValue 缺省值
  * @param {String}  extProRequired 是否为必填，1：必填，0：可空
  * @param {String}  extProDesc 属性描述
  * @param {String}  extProValidcheck 合法性校验
  * @param {String}  extProFormat 数据格式
  * @return	{ctpObj} 创建的扩展属性组件 
  */
function createExtItem(formObj,gridLayoutObj,extProId,extProName,extProType,extProDefaultValue,extProRequired,extProDesc,extProValidcheck,extProFormat,selectKeyValue){	
    var _mContext = "authExtUser.jsp -> cteateExtItem(formObj,extProId,extProName,extProType,extProDefaultValue,extProRequired,extProDesc,extProValidcheck,extProFormat,selectKeyValue)";
    try {
		var _extObj=null;//定义扩展属性返回对象		
		var _rules="";//校验规则
		var _extProId=formObj.getName()+'_propertyId_'+extProId;
		var _extValueProId=formObj.getName()+'_propertyValue_'+extProId;
		if(extProRequired=="1"){
			_rules="required";
		}
		if(extProValidcheck!=""&&extProValidcheck!=null){
			_rules==""?_rules=extProValidcheck:_rules=_rules+","+extProValidcheck;
		}
		if(_rules!=""){
			_rules="rules["+_rules+"]";
		}
        switch (extProType) {
			case "0":    //textfield                
				_extObj=new ctp.ui.textfield({
			  	    id: _extValueProId,//组件id
					name:'propertyValue',//组件名称			  	    
					value: extProDefaultValue,//组件默认值
					width:'100%', //组件宽度	
					validate: _rules //验证规则	   
			     });
                break;
            case "1"://textarea
                _extObj=new ctp.ui.textarea({
			  	    id: _extValueProId,//组件id
					name:'propertyValue',//组件名称			  	    
					value: extProDefaultValue,//组件默认值
					width:'100%', //组件宽度	
					rows:'2',//默认显示2行高度
					validate: _rules //验证规则	   
			     });
                break;           
		    case "2"://date组件
		        _extObj=new ctp.ui.datepicker({
			  	    id: _extValueProId,//组件id
					name:'propertyValue',//组件名称			  	    
					value: extProDefaultValue,//组件默认值
					width:'100%', //组件宽度				
					validate: _rules //验证规则	   
			     });                
                break;
			case "3"://combobox组件
			    var _itemsArray=[],_defaultArray=[],_items;                
                if (extProDefaultValue != "" && extProDefaultValue != null) {
                    _defaultArray = extProDefaultValue.split(",");
                    _selectKey = selectKeyValue.split(",");
                    $.each(_defaultArray, function(i, defaultValue){
						_itemsArray.push({text:defaultValue,value:_selectKey[i]});                        
                    });
                }			    
			    _extObj=new ctp.ui.combobox({
			  	    id: _extValueProId,//组件id
					name:'propertyValue',//组件名称					
			  	    items:_itemsArray,
			        width:'100%',
					validate: _rules //验证规则			   
			     });                
                break;
			case "4"://radiogroup组件
			    var _itemsArray=[],_defaultArray=[],_items;                
                if (extProValidcheck != "" && extProValidcheck != null) {
                    _defaultArray = extProDefaultValue.split(",");
                    $.each(_defaultArray, function(i, defaultValue){
						_itemsArray.push({label:defaultValue,value:defaultValue});                        
                    });
                }			 
			    _extObj=new ctp.ui.radiogroup({
			  	    id: _extValueProId,//组件id
					name:'propertyValue',//组件名称					
			  	    items:_itemsArray,
			    	width:'100%',
					validate: _rules //验证规则				   
			     });               
                break;
			case "5"://checkboxgroup
			    var _itemsArray=[],_defaultArray=[],_items;                
                if (extProValidcheck != "" && extProValidcheck != null) {
                    _defaultArray = extProDefaultValue.split(",");
                    $.each(_defaultArray, function(i, defaultValue){
						_itemsArray.push({label:defaultValue,value:defaultValue});                        
                    });
                }			 
			    _extObj=new ctp.ui.checkboxgroup({
			  	    id: _extValueProId,//组件id
					name:'propertyValue',//组件名称					
			  	    items:_itemsArray,
			    	width:'100%',
					validate: _rules //验证规则				   
			     });               
                break;               
			default:
			    $.error(Error.code("WEB-CORE-1004", "extProType","[textfield,textarea,date,combobox,radiogroup,checkboxgroup]"));
			    break;			
		}//switch
		if(_extObj!=null){
			var _text="";//组件关联标签
			extProRequired==1?_text=extProName+'<span style="color:red;">*</span>:':_text=extProName+':';
			gridLayoutObj.append({label:{text:_text},element:_extObj});//在布局器中追加该该组件
		    formObj.createHiddenInput(_extProId,"propertyId",extProId);//创建属性id隐藏域
		    var _validator=formObj.settings.validator;//form对象的校验器
		    if (ctp.core.getType(_validator) == 'validator') {
				_validator.refresh();//刷新验证框架
			}		    
		}	
		return _extObj;
    } 
    catch (e) {
        ctp.core.log.err(_mContext, e.message);
    }  
}
/**
 * 设置扩展属性的值
 * @version	 1.0
 * @since	 1.0
 * @author	kfzx-lixy01
 * @param {ctpObj}  formObj 扩展属性所在form对象
 * @param {String}  extPros 扩展属性列表
 * @param {String}  extDatas 扩展属性数据
 */
function setExtValue(formObj,extPros,extDatas){	
    var _mContext = "branchExt.js -> setExtValue(formObj,extPros,extDatas)";	
    try {        
        if (extPros != "") {            
            if (extPros.length > 0) {
                $.each(extPros, function(i, ext){
                    if (i > 0) {//忽略第一个数据totalNum
                        var extProId = ext.id;//扩展属性ID
                        var extProName = ext.name;//扩展属性名称
                        var extProTable = ext.table;//扩展表
                        var extProType = ext.type;//扩展属性类型,0：textfield，1：textarea，2：number，3：date，4：combobox，5：radiogroup，6：checkboxgroup 
                        var extProDefaultValue = ext.defaultvalue;//缺省值，当属性为combobox、radiogroup、checkboxgroup 类型时，代表备选项，以分号";"分隔，放置在第一位的为缺省显示项 
                        var extProRequired = ext.required;//是否为必填，1：必填，0：可空
                        var extProDesc = ext.desc;//属性描述
                        var extProValidcheck = ext.validcheck;//合法性校验
                        var extProFormat = ext.format;//数据格式
                        var _extValueProId=formObj.getName()+'_propertyValue_'+extProId;
                        var hasData=false;//是否有扩展数据                        
                        if (extDatas != "") {
                            if (extDatas.length > 0) {
                                $.each(extDatas, function(i, data){                                    
                                    var _propertyId = data.propertyId;//属性ID
                                    var _value = data.value;//属性值
                                    if(extProId==_propertyId){
										hasData=true;//找到该组件项
										formObj.getObj(_extValueProId).setValue(_value); //设置扩展属性的值
									    return false;//跳出循环
									}else{
										return true;//继续查找
									}
                                    
                                });                                
                            }
                        }
						if(hasData==false){//该扩展属性没有相关扩展数据，如果有默认值，则设置为默认值，否则设置为空
						     if(extProDefaultValue=="" || extProDefaultValue==null){
							 	  formObj.getObj(_extValueProId).setValue(""); //设置扩展属性的值
							 }else{
							 	  formObj.getObj(_extValueProId).setValue(extProDefaultValue); //设置扩展属性的值
							 }						     
						}
						
                    }
                });                
                
            }
        }
    } 
    catch (e) {
        ctp.core.log.err(_mContext, e.message);
    }  
}   
</script>
